import request from '@/utils/request'

/**
 * 系统配置管理API接口
 */

// 分页查询系统配置列表
export function getSystemConfigPage(currentPage, pageSize, queryData) {
  return request({
    url: `/api/system-config/page/${currentPage}/${pageSize}`,
    method: 'get',
    params: queryData
  })
}

// 根据ID查询系统配置详情
export function getSystemConfigById(configId) {
  return request({
    url: `/api/system-config/${configId}`,
    method: 'get'
  })
}

// 根据配置键获取配置值
export function getConfigValue(configKey) {
  return request({
    url: `/api/system-config/value/${configKey}`,
    method: 'get'
  })
}

// 根据配置类型获取配置列表
export function getConfigsByType(configType) {
  return request({
    url: `/api/system-config/type/${configType}`,
    method: 'get'
  })
}

// 新增系统配置
export function addSystemConfig(configData) {
  return request({
    url: '/api/system-config',
    method: 'post',
    data: configData
  })
}

// 更新系统配置
export function updateSystemConfig(configData) {
  return request({
    url: '/api/system-config',
    method: 'put',
    data: configData
  })
}

// 删除系统配置
export function deleteSystemConfig(configId) {
  return request({
    url: `/api/system-config/${configId}`,
    method: 'delete'
  })
}

// 批量删除系统配置
export function batchDeleteSystemConfigs(configIds) {
  return request({
    url: '/api/system-config/batch',
    method: 'delete',
    data: configIds
  })
}

// 修改配置状态
export function updateConfigStatus(configId, status) {
  return request({
    url: `/api/system-config/${configId}/status`,
    method: 'put',
    params: { status }
  })
}

// 刷新配置缓存
export function refreshConfigCache() {
  return request({
    url: '/api/system-config/refresh-cache',
    method: 'post'
  })
}

// 获取所有启用的配置（用于缓存）
export function getAllEnabledConfigs() {
  return request({
    url: '/api/system-config/all-enabled',
    method: 'get'
  })
}

// 批量更新配置
export function batchUpdateConfigs(configMap) {
  return request({
    url: '/api/system-config/batch',
    method: 'put',
    data: configMap
  })
}

// 检查配置键是否存在
export function checkConfigKeyExists(configKey, excludeId) {
  return request({
    url: '/api/system-config/check-key',
    method: 'get',
    params: { configKey, excludeId }
  })
}